package com.hyc.fengqiao.util;

import sun.misc.BASE64Encoder;

import java.net.URLEncoder;
import java.security.MessageDigest;

public class MessageDigestUtil {
    /**
     * 获取信息摘要
     *
     * @param msgData JSON格式的请求内容
     * @param checkCode 客户校验码
     * @param timestamp 时间戳
     * @return 摘要信息字符串
     */
    public static String getDigest(String msgData, String checkCode, String timestamp) {
        String msgDigest = null;
        //客户校验码    使用顺丰分配的客户校验码
        //将业务报文+时间戳+校验码组合成需加密的字符串(注意顺序)
        String toVerifyText = msgData + timestamp + checkCode;
        try {
            //因业务报文中可能包含加号、空格等特殊字符，需要urlEnCode处理
            toVerifyText = URLEncoder.encode(toVerifyText, "UTF-8");
            //进行Md5加密
            MessageDigest md5 = MessageDigest.getInstance("MD5");
            md5.update(toVerifyText.getBytes("UTF-8"));
            byte[] md = md5.digest();
            //通过BASE64生成数字签名
            msgDigest = new String(new BASE64Encoder().encode(md));
        } catch (Exception e) {
        }

        return msgDigest;
    }

}
